// const arrow = function (param) {}
// const arrow = (param) => {}

// const arrow = param => {}
// const arrow = param => console.log(param)

// const arrow = param => ({
//   param: 1
// }) // return obj

// const arrow = (param1, param2) => {}
// const arrow = (param) => {}
// // {id:123, movie: '33 blid eye'}
// const arrow = ({
//   id,
//   movie
// }) => {
//   console.log(id, movie)
// }

const luke = {
  id: 2,
  say: function () {
    setTimeout(function () {
      console.log('global id: ', this.id)
    }, 500);
  },
  sayWithThis: function () {
    var that = this; // that, self
    setTimeout(function () {
      console.log('this id: ', that.id)
    }, 2000);
  },
  sayWithArrow: function () {
    setTimeout(() => {
      console.log('arrow id: ', this.id)
    }, 2500);
  },
  sayWithOtherArrow: () => {
    setTimeout(() => {
      console.log('other arrow id: ', this.id)
    }, 2500);
  }
}

luke.say()
luke.sayWithThis()
luke.sayWithArrow()
luke.sayWithOtherArrow()